Spark Thrift Server快速入门
经常有初学Spark的朋友问我,"没有合适的环境让我方便学习SQL,我熟悉MySQL(或者Postgres,MSSQL),我不喜欢命令行的方式(spark-sql),推荐一个好用的客户端吧", 我回答到,你需要Spark Thrift Server 和Dbeaver或者SQuirreL SQL Client。
Spark Thrift JDBC/ODBC Server (简称 Spark Thrift Server 或者 STS)是Spark SQL的Apache Hive HiveServer2的端口(默认10000),通过这个端口可以允许用户使用JDBC/ODBC端口协议来执行SQL查询。 通过使用STS,用户就可以用使用一些炫目的BI工具,比如Superset来连接Spark进行基于大数据量的报表制作。当然也可以使用支持JDBC的客户端,比如我今天推荐的客户端Dbeaver,
DBeaver是一个SQL客户端和数据库管理工具。对于关系数据库,它使用JDBC API通过JDBC驱动程序与数据库交互。对于其他数据库(NoSQL),它使用专有数据库驱动程序。它提供了一个编辑器,支持代码完成和语法突显。它提供了一种插件体系结构(基于Eclipse插件体系结构),允许用户修改应用程序的大部分行为,以提供与数据库无关的针对数据库的功能或特性。这是一个用Java编写的基于Eclipse平台的桌面应用程序。
本次依然以Windows环境为例(Linux和Mac下相对更加简单),
准备工作:
下载Dbeaver,并解压缩
下载winutils,并解压缩
下载Spark, 解压缩即可
下载安装JDK,推荐Amazon Corretto, 只需要下载解压缩即可
启动Spark Thrift Server假设JDK,winutils,Spark均解压缩到了c:\spark目录下,具体可以看下代码的路径信息(可以根据具体需要修改),
@rem start-thriftserver.cmd
@rem 设置基础环境变量
set HADOOP_HOME=c:\spark\winutils-master\hadoop-2.7.1
set JAVA_HOME=c:\spark\jdk1.8.0_202
set PATH=%JAVA_HOME%\bin;%PATH%
set SPARK_HOME=c:\spark\spark-2.4.2-bin-hadoop2.7
@运行Spark ThriftServer
java -cp %SPARK_HOME%/conf/*;%SPARK_HOME%/jars/* -Xmx1g org.apache.spark.deploy.SparkSubmit --master local[*] --class org.apache.spark.sql.hive.thriftserver.HiveThriftServer2 --name "Thrift JDBC/ODBC Server" spark-internal
pause
更多练习
SHOW DATABASES
SHOW TABLES
DROP TABLE iris
DROP table iris_ext
select * from csv.`c:\\spark\\data\\iris.csv`
CREATE TABLE iris
USING csv
OPTIONS (path "c:\\spark\\data\\iris.csv", header "true", inferSchema "true")
show create table iris
SELECT * from iris
CREATE EXTERNAL TABLE
iris_ext
STORED AS PARQUET LOCATION 'c:\\spark\\data\\iris'
select * from iris
show tables
SELECT * from iris_ext
DESCRIBE iris_ext
show CREATE table iris_ext
SELECT count(*) from iris
SELECT Species, count(*) as cnt from iris group by 1
直接使用Spark SQL
set HADOOP_HOME=c:\spark\winutils-master\hadoop-2.7.1
set JAVA_HOME=c:\spark\jdk1.8.0_202
set SPARK_HOME=c:\spark\spark-2.4.2-bin-hadoop2.7
%SPARK_HOME%/bin/spark-sql.cmd
使用beelin连接Spark Thrift Server
set HADOOP_HOME=c:\spark\winutils-master\hadoop-2.7.1
set JAVA_HOME=c:\spark\jdk1.8.0_202
set SPARK_HOME=c:\spark\spark-2.4.2-bin-hadoop2.7
%SPARK_HOME%/bin/beelin.cmd
!connect jdbc:hive2://localhost:10000